// Created from GenerationTemplate
// For Decisions HL7 Engine
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Reflection;
using DecisionsFramework.Design.Properties;
using Decisions.HL7.Generated.AbstractMessage;
using Decisions.HL7.DataTypes;
using ST = System.String;
using SI = System.String;
using TX = System.String;
using FT = System.String;
using IS = System.String;
using ID = System.String;
using SNM = System.String;

namespace Decisions.HL7.Message
{
    [DataContract]
	public class PSL : AbstractSegment
    {

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("1 Provider Product/Service Line Item Number",1)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.True,"EI")]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.True,"EI")]
	    public EI ProviderProductServiceLineItemNumber {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("2 Payer Product/Service Line Item Number",2)]
  	    [HL7Field(HL7Version.v26, 2, HL7Repeat.False, HL7Required.True,"EI")]
  	    [HL7Field(HL7Version.v27, 2, HL7Repeat.False, HL7Required.True,"EI")]
	    public EI PayerProductServiceLineItemNumber {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("3 Product/Service Line Item Sequence Number",3)]
  	    [HL7Field(HL7Version.v26, 3, HL7Repeat.False, HL7Required.True,"SI")]
  	    [HL7Field(HL7Version.v27, 3, HL7Repeat.False, HL7Required.True,"SI")]
	    public SI ProductServiceLineItemSequenceNumber {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("4 Provider Tracking ID",4)]
  	    [HL7Field(HL7Version.v26, 4, HL7Repeat.False, HL7Required.True,"EI")]
  	    [HL7Field(HL7Version.v27, 4, HL7Repeat.False, HL7Required.True,"EI")]
	    public EI ProviderTrackingID {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("5 Payer Tracking ID",5)]
  	    [HL7Field(HL7Version.v26, 5, HL7Repeat.False, HL7Required.True,"EI")]
  	    [HL7Field(HL7Version.v27, 5, HL7Repeat.False, HL7Required.True,"EI")]
	    public EI PayerTrackingID {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("6 Product/Service Line Item Status",6)]
  	    [HL7Field(HL7Version.v26, 6, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 6, HL7Repeat.False, HL7Required.True,"CWE")]
		[ProductServiceStatus]
	    public CWE ProductServiceLineItemStatus {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("7 Product/Service Code",7)]
  	    [HL7Field(HL7Version.v26, 7, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 7, HL7Repeat.False, HL7Required.True,"CWE")]
		[ProductServiceCode]
	    public CWE ProductServiceCode {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("8 Product/Service Code Modifier",8)]
  	    [HL7Field(HL7Version.v26, 8, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 8, HL7Repeat.False, HL7Required.True,"CWE")]
		[ProductServiceCodeModifier]
	    public CWE ProductServiceCodeModifier {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("9 Product/Service Code Description",9)]
  	    [HL7Field(HL7Version.v26, 9, HL7Repeat.False, HL7Required.True,"ST")]
  	    [HL7Field(HL7Version.v27, 9, HL7Repeat.False, HL7Required.True,"ST")]
	    public ST ProductServiceCodeDescription {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("10 Product/Service Effective Date",10)]
  	    [HL7Field(HL7Version.v26, 10, HL7Repeat.False, HL7Required.True,"DTM")]
  	    [HL7Field(HL7Version.v27, 10, HL7Repeat.False, HL7Required.True,"DTM")]
	    public DTM ProductServiceEffectiveDate {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("11 Product/Service Expiration Date",11)]
  	    [HL7Field(HL7Version.v26, 11, HL7Repeat.False, HL7Required.True,"DTM")]
  	    [HL7Field(HL7Version.v27, 11, HL7Repeat.False, HL7Required.True,"DTM")]
	    public DTM ProductServiceExpirationDate {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("12 Product/Service Quantity",12)]
  	    [HL7Field(HL7Version.v26, 12, HL7Repeat.False, HL7Required.True,"CQ")]
  	    [HL7Field(HL7Version.v27, 12, HL7Repeat.False, HL7Required.True,"CQ")]
		[QuantityUnits]
	    public CQ ProductServiceQuantity {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("13 Product/Service Unit Cost",13)]
  	    [HL7Field(HL7Version.v26, 13, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 13, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP ProductServiceUnitCost {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("14 Number of Items per Unit",14)]
  	    [HL7Field(HL7Version.v26, 14, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 14, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM NumberofItemsperUnit {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("15 Product/Service Gross Amount",15)]
  	    [HL7Field(HL7Version.v26, 15, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 15, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP ProductServiceGrossAmount {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("16 Product/Service Billed Amount",16)]
  	    [HL7Field(HL7Version.v26, 16, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 16, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP ProductServiceBilledAmount {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("17 Product/Service Clarification Code Type",17)]
  	    [HL7Field(HL7Version.v26, 17, HL7Repeat.False, HL7Required.True,"IS")]
  	    [HL7Field(HL7Version.v27, 17, HL7Repeat.False, HL7Required.True,"CWE")]
		[ProductServicesClarificationCodes]
	    public CWE ProductServiceClarificationCodeType {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("18 Product/Service Clarification Code Value",18)]
  	    [HL7Field(HL7Version.v26, 18, HL7Repeat.False, HL7Required.True,"ST")]
  	    [HL7Field(HL7Version.v27, 18, HL7Repeat.False, HL7Required.True,"ST")]
	    public ST ProductServiceClarificationCodeValue {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("19 Health Document Reference Identifier",19)]
  	    [HL7Field(HL7Version.v26, 19, HL7Repeat.False, HL7Required.True,"EI")]
  	    [HL7Field(HL7Version.v27, 19, HL7Repeat.False, HL7Required.True,"EI")]
	    public EI HealthDocumentReferenceIdentifier {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("20 Processing Consideration Code",20)]
  	    [HL7Field(HL7Version.v26, 20, HL7Repeat.False, HL7Required.True,"IS")]
  	    [HL7Field(HL7Version.v27, 20, HL7Repeat.False, HL7Required.True,"CWE")]
		[ProcessingConsiderationCodes]
	    public CWE ProcessingConsiderationCode {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("21 Restricted Disclosure Indicator",21)]
  	    [HL7Field(HL7Version.v26, 21, HL7Repeat.False, HL7Required.True,"ID")]
  	    [HL7Field(HL7Version.v27, 21, HL7Repeat.False, HL7Required.True,"ID")]
		[ExpandedYesnoIndicator]
	    public ID RestrictedDisclosureIndicator {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("22 Related Product/Service Code Indicator",22)]
  	    [HL7Field(HL7Version.v26, 22, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 22, HL7Repeat.False, HL7Required.True,"CWE")]
		[ProductServiceCode]
	    public CWE RelatedProductServiceCodeIndicator {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("23 Product/Service Amount for Physician",23)]
  	    [HL7Field(HL7Version.v26, 23, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 23, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP ProductServiceAmountforPhysician {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("24 Product/Service Cost Factor",24)]
  	    [HL7Field(HL7Version.v26, 24, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 24, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM ProductServiceCostFactor {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("25 Cost Center",25)]
  	    [HL7Field(HL7Version.v26, 25, HL7Repeat.False, HL7Required.True,"CX")]
  	    [HL7Field(HL7Version.v27, 25, HL7Repeat.False, HL7Required.True,"CX")]
	    public CX CostCenter {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("26 Billing Period",26)]
  	    [HL7Field(HL7Version.v26, 26, HL7Repeat.False, HL7Required.True,"DR")]
  	    [HL7Field(HL7Version.v27, 26, HL7Repeat.False, HL7Required.True,"DR")]
	    public DR BillingPeriod {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("27 Days without Billing",27)]
  	    [HL7Field(HL7Version.v26, 27, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 27, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM DayswithoutBilling {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("28 Session-No",28)]
  	    [HL7Field(HL7Version.v26, 28, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 28, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM SessionNo {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("29 Executing Physician ID",29)]
  	    [HL7Field(HL7Version.v26, 29, HL7Repeat.False, HL7Required.True,"XCN")]
  	    [HL7Field(HL7Version.v27, 29, HL7Repeat.False, HL7Required.True,"XCN")]
	    public XCN ExecutingPhysicianID {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("30 Responsible Physician ID",30)]
  	    [HL7Field(HL7Version.v26, 30, HL7Repeat.False, HL7Required.True,"XCN")]
  	    [HL7Field(HL7Version.v27, 30, HL7Repeat.False, HL7Required.True,"XCN")]
	    public XCN ResponsiblePhysicianID {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("31 Role Executing Physician",31)]
  	    [HL7Field(HL7Version.v26, 31, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 31, HL7Repeat.False, HL7Required.True,"CWE")]
		[RoleExecutingPhysician]
	    public CWE RoleExecutingPhysician {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("32 Medical Role Executing Physician",32)]
  	    [HL7Field(HL7Version.v26, 32, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 32, HL7Repeat.False, HL7Required.True,"CWE")]
		[MedicalRoleExecutingPhysician]
	    public CWE MedicalRoleExecutingPhysician {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("33 Side of body",33)]
  	    [HL7Field(HL7Version.v26, 33, HL7Repeat.False, HL7Required.True,"CWE")]
  	    [HL7Field(HL7Version.v27, 33, HL7Repeat.False, HL7Required.True,"CWE")]
		[Sideofbody]
	    public CWE Sideofbody {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("34 Number of TP's PP",34)]
  	    [HL7Field(HL7Version.v26, 34, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 34, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM NumberofTPsPP {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("35 TP-Value PP",35)]
  	    [HL7Field(HL7Version.v26, 35, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 35, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP TPValuePP {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("36 Internal Scaling Factor PP",36)]
  	    [HL7Field(HL7Version.v26, 36, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 36, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM InternalScalingFactorPP {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("37 External Scaling Factor PP",37)]
  	    [HL7Field(HL7Version.v26, 37, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 37, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM ExternalScalingFactorPP {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("38 Amount PP",38)]
  	    [HL7Field(HL7Version.v26, 38, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 38, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP AmountPP {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("39 Number of TP's Technical Part",39)]
  	    [HL7Field(HL7Version.v26, 39, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 39, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM NumberofTPsTechnicalPart {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("40 TP-Value Technical Part",40)]
  	    [HL7Field(HL7Version.v26, 40, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 40, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP TPValueTechnicalPart {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("41 Internal Scaling Factor Technical Part",41)]
  	    [HL7Field(HL7Version.v26, 41, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 41, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM InternalScalingFactorTechnicalPart {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("42 External Scaling Factor Technical Part",42)]
  	    [HL7Field(HL7Version.v26, 42, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 42, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM ExternalScalingFactorTechnicalPart {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("43 Amount Technical Part",43)]
  	    [HL7Field(HL7Version.v26, 43, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 43, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP AmountTechnicalPart {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("44 Total Amount Professional Part + Technical Part",44)]
  	    [HL7Field(HL7Version.v26, 44, HL7Repeat.False, HL7Required.True,"CP")]
  	    [HL7Field(HL7Version.v27, 44, HL7Repeat.False, HL7Required.True,"CP")]
	    public CP TotalAmountProfessionalPartTechnicalPart {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("45 VAT-Rate",45)]
  	    [HL7Field(HL7Version.v26, 45, HL7Repeat.False, HL7Required.True,"NM")]
  	    [HL7Field(HL7Version.v27, 45, HL7Repeat.False, HL7Required.True,"NM")]
	    public NM VATRate {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("46 Main-Service",46)]
  	    [HL7Field(HL7Version.v26, 46, HL7Repeat.False, HL7Required.True,"ID")]
  	    [HL7Field(HL7Version.v27, 46, HL7Repeat.False, HL7Required.True,"ID")]
	    public ID MainService {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("47 Validation",47)]
  	    [HL7Field(HL7Version.v26, 47, HL7Repeat.False, HL7Required.True,"ID")]
  	    [HL7Field(HL7Version.v27, 47, HL7Repeat.False, HL7Required.True,"ID")]
		[YesnoIndicator]
	    public ID Validation {get;set;}

        /// -----------------------------
        /// -----------------------------
		[DataMember]
    	[PropertyClassification("48 Comment",48)]
  	    [HL7Field(HL7Version.v26, 48, HL7Repeat.False, HL7Required.True,"ST")]
  	    [HL7Field(HL7Version.v27, 48, HL7Repeat.False, HL7Required.True,"ST")]
	    public ST Comment {get;set;}


	    [DataMember]
        [PropertyClassification("AdditionalValue1", 49)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue1 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue2", 50)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue2 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue3", 51)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue3 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue4", 52)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue4 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue5", 53)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue5 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue6", 54)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue6 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue7", 55)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue7 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue8", 56)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue8 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue9", 57)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue9 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue10", 58)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue10 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue11", 59)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue11 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue12", 60)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue12 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue13", 61)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue13 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue14", 62)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue14 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue15", 63)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue15 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue16", 64)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue16 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue17", 65)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue17 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue18", 66)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue18 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue19", 67)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue19 { get; set; }

		    [DataMember]
        [PropertyClassification("AdditionalValue20", 68)]
		[HL7Field(HL7Version.v23, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v231, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v24, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v25, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v251, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v26, 1, HL7Repeat.False, HL7Required.False)]
  	    [HL7Field(HL7Version.v27, 1, HL7Repeat.False, HL7Required.False)]
		public string AdditionalValue20 { get; set; }

	

		internal override void ConsumeTextSegment(string segmentTextData, HL7ParserOptions options)
		{
			string[] segmentTextParts = segmentTextData.Split(new char[] { options.FieldSep }, StringSplitOptions.None);
			ProviderProductServiceLineItemNumber = (EI)ParseTextAtPositionIntoData(segmentTextParts, 1, options, typeof(EI), "PSL.1");
			PayerProductServiceLineItemNumber = (EI)ParseTextAtPositionIntoData(segmentTextParts, 2, options, typeof(EI), "PSL.2");
			ProductServiceLineItemSequenceNumber = (SI)ParseTextAtPositionIntoData(segmentTextParts, 3, options, typeof(SI), "PSL.3");
			ProviderTrackingID = (EI)ParseTextAtPositionIntoData(segmentTextParts, 4, options, typeof(EI), "PSL.4");
			PayerTrackingID = (EI)ParseTextAtPositionIntoData(segmentTextParts, 5, options, typeof(EI), "PSL.5");
			ProductServiceLineItemStatus = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 6, options, typeof(CWE), "PSL.6");
			ProductServiceCode = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 7, options, typeof(CWE), "PSL.7");
			ProductServiceCodeModifier = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 8, options, typeof(CWE), "PSL.8");
			ProductServiceCodeDescription = (ST)ParseTextAtPositionIntoData(segmentTextParts, 9, options, typeof(ST), "PSL.9");
			ProductServiceEffectiveDate = (DTM)ParseTextAtPositionIntoData(segmentTextParts, 10, options, typeof(DTM), "PSL.10");
			ProductServiceExpirationDate = (DTM)ParseTextAtPositionIntoData(segmentTextParts, 11, options, typeof(DTM), "PSL.11");
			ProductServiceQuantity = (CQ)ParseTextAtPositionIntoData(segmentTextParts, 12, options, typeof(CQ), "PSL.12");
			ProductServiceUnitCost = (CP)ParseTextAtPositionIntoData(segmentTextParts, 13, options, typeof(CP), "PSL.13");
			NumberofItemsperUnit = (NM)ParseTextAtPositionIntoData(segmentTextParts, 14, options, typeof(NM), "PSL.14");
			ProductServiceGrossAmount = (CP)ParseTextAtPositionIntoData(segmentTextParts, 15, options, typeof(CP), "PSL.15");
			ProductServiceBilledAmount = (CP)ParseTextAtPositionIntoData(segmentTextParts, 16, options, typeof(CP), "PSL.16");
			ProductServiceClarificationCodeType = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 17, options, typeof(CWE), "PSL.17");
			ProductServiceClarificationCodeValue = (ST)ParseTextAtPositionIntoData(segmentTextParts, 18, options, typeof(ST), "PSL.18");
			HealthDocumentReferenceIdentifier = (EI)ParseTextAtPositionIntoData(segmentTextParts, 19, options, typeof(EI), "PSL.19");
			ProcessingConsiderationCode = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 20, options, typeof(CWE), "PSL.20");
			RestrictedDisclosureIndicator = (ID)ParseTextAtPositionIntoData(segmentTextParts, 21, options, typeof(ID), "PSL.21");
			RelatedProductServiceCodeIndicator = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 22, options, typeof(CWE), "PSL.22");
			ProductServiceAmountforPhysician = (CP)ParseTextAtPositionIntoData(segmentTextParts, 23, options, typeof(CP), "PSL.23");
			ProductServiceCostFactor = (NM)ParseTextAtPositionIntoData(segmentTextParts, 24, options, typeof(NM), "PSL.24");
			CostCenter = (CX)ParseTextAtPositionIntoData(segmentTextParts, 25, options, typeof(CX), "PSL.25");
			BillingPeriod = (DR)ParseTextAtPositionIntoData(segmentTextParts, 26, options, typeof(DR), "PSL.26");
			DayswithoutBilling = (NM)ParseTextAtPositionIntoData(segmentTextParts, 27, options, typeof(NM), "PSL.27");
			SessionNo = (NM)ParseTextAtPositionIntoData(segmentTextParts, 28, options, typeof(NM), "PSL.28");
			ExecutingPhysicianID = (XCN)ParseTextAtPositionIntoData(segmentTextParts, 29, options, typeof(XCN), "PSL.29");
			ResponsiblePhysicianID = (XCN)ParseTextAtPositionIntoData(segmentTextParts, 30, options, typeof(XCN), "PSL.30");
			RoleExecutingPhysician = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 31, options, typeof(CWE), "PSL.31");
			MedicalRoleExecutingPhysician = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 32, options, typeof(CWE), "PSL.32");
			Sideofbody = (CWE)ParseTextAtPositionIntoData(segmentTextParts, 33, options, typeof(CWE), "PSL.33");
			NumberofTPsPP = (NM)ParseTextAtPositionIntoData(segmentTextParts, 34, options, typeof(NM), "PSL.34");
			TPValuePP = (CP)ParseTextAtPositionIntoData(segmentTextParts, 35, options, typeof(CP), "PSL.35");
			InternalScalingFactorPP = (NM)ParseTextAtPositionIntoData(segmentTextParts, 36, options, typeof(NM), "PSL.36");
			ExternalScalingFactorPP = (NM)ParseTextAtPositionIntoData(segmentTextParts, 37, options, typeof(NM), "PSL.37");
			AmountPP = (CP)ParseTextAtPositionIntoData(segmentTextParts, 38, options, typeof(CP), "PSL.38");
			NumberofTPsTechnicalPart = (NM)ParseTextAtPositionIntoData(segmentTextParts, 39, options, typeof(NM), "PSL.39");
			TPValueTechnicalPart = (CP)ParseTextAtPositionIntoData(segmentTextParts, 40, options, typeof(CP), "PSL.40");
			InternalScalingFactorTechnicalPart = (NM)ParseTextAtPositionIntoData(segmentTextParts, 41, options, typeof(NM), "PSL.41");
			ExternalScalingFactorTechnicalPart = (NM)ParseTextAtPositionIntoData(segmentTextParts, 42, options, typeof(NM), "PSL.42");
			AmountTechnicalPart = (CP)ParseTextAtPositionIntoData(segmentTextParts, 43, options, typeof(CP), "PSL.43");
			TotalAmountProfessionalPartTechnicalPart = (CP)ParseTextAtPositionIntoData(segmentTextParts, 44, options, typeof(CP), "PSL.44");
			VATRate = (NM)ParseTextAtPositionIntoData(segmentTextParts, 45, options, typeof(NM), "PSL.45");
			MainService = (ID)ParseTextAtPositionIntoData(segmentTextParts, 46, options, typeof(ID), "PSL.46");
			Validation = (ID)ParseTextAtPositionIntoData(segmentTextParts, 47, options, typeof(ID), "PSL.47");
			Comment = (ST)ParseTextAtPositionIntoData(segmentTextParts, 48, options, typeof(ST), "PSL.48");
		}

		public string GetER7(HL7ParserOptions options) {
			List<string> segmentParts = new List<string>();
			segmentParts.Add("PSL");
			segmentParts.Add(GetER7TextForSegmentPart(ProviderProductServiceLineItemNumber, options));
			segmentParts.Add(GetER7TextForSegmentPart(PayerProductServiceLineItemNumber, options));
		    segmentParts.Add(ProductServiceLineItemSequenceNumber);
			segmentParts.Add(GetER7TextForSegmentPart(ProviderTrackingID, options));
			segmentParts.Add(GetER7TextForSegmentPart(PayerTrackingID, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceLineItemStatus, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceCode, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceCodeModifier, options));
		    segmentParts.Add(ProductServiceCodeDescription);
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceEffectiveDate, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceExpirationDate, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceQuantity, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceUnitCost, options));
			segmentParts.Add(GetER7TextForSegmentPart(NumberofItemsperUnit, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceGrossAmount, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceBilledAmount, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceClarificationCodeType, options));
		    segmentParts.Add(ProductServiceClarificationCodeValue);
			segmentParts.Add(GetER7TextForSegmentPart(HealthDocumentReferenceIdentifier, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProcessingConsiderationCode, options));
		    segmentParts.Add(RestrictedDisclosureIndicator);
			segmentParts.Add(GetER7TextForSegmentPart(RelatedProductServiceCodeIndicator, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceAmountforPhysician, options));
			segmentParts.Add(GetER7TextForSegmentPart(ProductServiceCostFactor, options));
			segmentParts.Add(GetER7TextForSegmentPart(CostCenter, options));
			segmentParts.Add(GetER7TextForSegmentPart(BillingPeriod, options));
			segmentParts.Add(GetER7TextForSegmentPart(DayswithoutBilling, options));
			segmentParts.Add(GetER7TextForSegmentPart(SessionNo, options));
			segmentParts.Add(GetER7TextForSegmentPart(ExecutingPhysicianID, options));
			segmentParts.Add(GetER7TextForSegmentPart(ResponsiblePhysicianID, options));
			segmentParts.Add(GetER7TextForSegmentPart(RoleExecutingPhysician, options));
			segmentParts.Add(GetER7TextForSegmentPart(MedicalRoleExecutingPhysician, options));
			segmentParts.Add(GetER7TextForSegmentPart(Sideofbody, options));
			segmentParts.Add(GetER7TextForSegmentPart(NumberofTPsPP, options));
			segmentParts.Add(GetER7TextForSegmentPart(TPValuePP, options));
			segmentParts.Add(GetER7TextForSegmentPart(InternalScalingFactorPP, options));
			segmentParts.Add(GetER7TextForSegmentPart(ExternalScalingFactorPP, options));
			segmentParts.Add(GetER7TextForSegmentPart(AmountPP, options));
			segmentParts.Add(GetER7TextForSegmentPart(NumberofTPsTechnicalPart, options));
			segmentParts.Add(GetER7TextForSegmentPart(TPValueTechnicalPart, options));
			segmentParts.Add(GetER7TextForSegmentPart(InternalScalingFactorTechnicalPart, options));
			segmentParts.Add(GetER7TextForSegmentPart(ExternalScalingFactorTechnicalPart, options));
			segmentParts.Add(GetER7TextForSegmentPart(AmountTechnicalPart, options));
			segmentParts.Add(GetER7TextForSegmentPart(TotalAmountProfessionalPartTechnicalPart, options));
			segmentParts.Add(GetER7TextForSegmentPart(VATRate, options));
		    segmentParts.Add(MainService);
		    segmentParts.Add(Validation);
		    segmentParts.Add(Comment);
			return string.Join("" + options.FieldSep, segmentParts.ToArray());
		}

    }
}

